8장. 좋은 재료 모으기 (데이터셋 엔지니어링)

출처: 『AI 엔지니어링』(Chip Huyen 지음) | 원서: AI Engineering (O'Reilly) — 본 입문판은 PDF 원문에서 직접 풀어 썼다.

코드는 분위기만 — Python·함수 같은 말은 몰라도 됩니다. 표의 '비유'와 '위험'만 봐도 충분해요.


0. 이 장의 새 단어 (0장에 없는 것만)

0장 용어집에 있는 말(파운데이션 모델·파인튜닝·토큰·환각 등)은 이미 안다고 치고 갑니다.

이 장에서 새로 나오는 어려운 말은 딱 3개입니다.


데이터 큐레이션(data curation)

한 문장 뜻 — 모델에게 먹일 데이터를 골라내고 다듬어서 학습에 딱 맞게 만드는 일.

일상비유 — 장보기 + 손질. 시장에서 좋은 재료만 고르고, 상한 건 버리고, 다듬어서 냄비에 넣을 준비를 하는 것.

한 줄 예 —

# 모은 데이터에서 나쁜 것만 골라 버림
# `good_data`에 중간 결과를 담아 다음 줄에서 재사용합니다.
good_data = [d for d in raw_data if 품질좋음(d)]

데이터 합성(data synthesis)

한 문장 뜻 — 진짜 데이터를 모으는 대신, 진짜처럼 보이는 데이터를 프로그램이나 AI로 새로 만들어 내는 일.

일상비유 — 모형 음식. 진짜 초밥을 못 구하면, 진짜처럼 보이는 가짜 초밥을 만들어 연습용으로 쓰는 것.

한 줄 예 —

# 진짜 데이터가 부족하면 AI로 비슷한 걸 만들어 냄
# `fake_data`에 중간 결과를 담아 다음 줄에서 재사용합니다.
fake_data = ai.make("환자 기록처럼 보이는 가짜 기록 100개")

모델 증류(model distillation)

한 문장 뜻 — 크고 똑똑한 모델(선생)의 답을 베껴서, 작고 빠른 모델(학생)을 가르치는 일.

일상비유 — 족집게 과외 노트. 비싼 일타강사(큰 모델)가 푼 풀이를 받아 적어, 그 노트로 동생(작은 모델)을 가르치는 것.

한 줄 예 —

# 아래 예제는 핵심 흐름만 짧게 보여 줍니다.
# 큰 모델이 만든 답으로 작은 모델을 학습시킴
answers = big_model.solve(questions)   # 선생이 풂
small_model.learn(questions, answers)  # 학생이 따라 배움

(귀납 도입) 이런 적 있죠?

요리 한번 망쳐 본 적 있죠?

레시피는 똑같이 따라 했는데, 재료가 시들시들했더니 맛이 영 별로였습니다.

모델도 똑같습니다.

저자는 이렇게 말합니다.

"무한한 컴퓨터를 가진 세계 최고 팀이라도, 데이터가 없으면 좋은 모델을 만들 수 없다."

옛날엔 "더 큰 모델, 더 좋은 구조"만 고민했습니다.

그런데 GPT-3 논문에선 데이터 담당이 단 2명이었습니다.

3년 뒤 그다음 세대 모델 논문에선 데이터 작업에 80명이 매달렸습니다.

# 아래 예제는 핵심 흐름만 짧게 보여 줍니다.
# 옛날 사고 — 모델만 키우면 됨
make_model_bigger()  # 그러면 똑똑해지겠지

# 요즘 사고 — 재료(데이터)가 절반이다
prepare_great_data()  # 좋은 재료부터 모으자

데이터를 좋게 만들어 성능을 올리는 이 관점을 데이터 중심 AI라고 부릅니다.

반대로 모델 구조만 손대는 옛 방식이 모델 중심 AI입니다.

이 장은 "좋은 재료(데이터)를 어떻게 모으고 다듬느냐"가 전부입니다.


이 장에서 딱 5가지만

  1. 재료 고르기(큐레이션) — 좋은 데이터의 조건은 딱 3개: 품질·커버리지·양. (요리 비유로 외우면 됨)
  2. 재료가 부족하면 만들기(합성) — 진짜 데이터가 없으면 AI로 비슷한 걸 만들어 채운다.
  3. 선생 베끼기(증류) — 큰 모델의 답을 베껴 작은 모델을 싸게 가르친다.
  4. 가짜 재료의 함정 — AI가 만든 데이터만 계속 먹이면 모델이 망가진다(모델 붕괴). 진짜와 섞어야 한다.
  5. 재료 손질(처리) — 모으고 나면 직접 들여다보고, 중복 빼고, 형식을 맞춰야 한다.

지금은 이 다섯 개만 들고 가면 됩니다.


학습 목표

  • 좋은 데이터의 세 가지 조건(품질·커버리지·양)을 설명한다.
  • 데이터 합성과 데이터 증강을 구분한다.
  • 모델 증류가 무엇이고 왜 쓰는지 설명한다.
  • AI가 만든 데이터의 위험(모델 붕괴 등)을 설명한다.

개념 1 — 좋은 재료의 3가지 조건 (데이터 큐레이션)

망가지는 장면

"데이터 100만 개 모았는데 모델이 더 멍청해졌어요."

알고 보니 대충 긁어모은 데이터라 엉터리·중복·관계없는 게 잔뜩 섞여 있었습니다.

양만 많았지, 재료가 엉망이었던 겁니다.

비유 먼저 — 요리

모델 학습은 요리입니다.

데이터는 재료입니다.

좋은 요리의 조건이 곧 좋은 데이터의 조건입니다.

비유 (요리) 코드 위험
재료가 신선한가 (품질) data = [d for d in pool if 신선함(d)] 상한 재료(엉터리 데이터) 넣으면 음식 망함
재료가 골고루 있나 (커버리지) data = 한식 + 양식 + 중식 # 골고루 설탕만 잔뜩이면 단맛만 나는 모델
재료가 충분한가 (양) if len(data) < 필요량: 더모음() 너무 적으면 한 끼도 못 만듦

조건은 딱 세 개입니다.

품질, 커버리지, 양.

하나씩 보겠습니다.

조건 1 — 품질 (재료가 신선한가)

신선한 재료가 적은 게, 상한 재료가 많은 것보다 낫습니다.

저자가 든 실제 사례입니다.

신중하게 만든 1만 개의 지시가, 대충 모은 수십만 개보다 훨씬 나았다. (Yi 모델 팀) 잘 고른 1,000개 예시로도 거대한 최상급 모델에 맞먹는 답을 만들 수 있었다. (LIMA 연구)

좋은 데이터란 대략 이런 성질을 갖습니다.

관련성 있고, 일관되고, 형식이 깔끔하고, 중복이 없고, 규정을 지킬 것.

# before — 신선도 안 따지고 다 넣음
data = 인터넷에서_긁은_전부   # 상한 것도 같이 들어감

# after — 신선한 것만 골라 넣음
# `data`에 중간 결과를 담아 다음 줄에서 재사용합니다.
data = [d for d in 인터넷에서_긁은_전부 if 관련있고_깔끔함(d)]

미니 시나리오 — 제품 리뷰를 긁어 왔더니 HTML 태그(<div> 같은 것)가 잔뜩 붙어 있습니다.

이런 쓰레기 토큰은 학습을 방해하니, 떼어 내야 신선한 재료가 됩니다.

조건 2 — 커버리지 (재료가 골고루 있나)

사용자는 별별 방식으로 질문합니다.

긴 질문, 짧은 질문, 오타 섞인 질문, 여러 언어.

학습 데이터에 이 다양함이 골고루 들어 있어야 합니다.

이걸 데이터 다양성이라고도 부릅니다.

# before — 짧은 질문만 학습 → 긴 질문에 약함
# `data`에 중간 결과를 담아 다음 줄에서 재사용합니다.
data = [짧은질문1, 짧은질문2, ...]

# after — 길이·말투를 골고루
# `data`에 중간 결과를 담아 다음 줄에서 재사용합니다.
data = [짧은질문, 긴질문, 오타질문, 정중한질문, ...]

미니 시나리오 — 여러 나라 고객을 받는 챗봇이라면, 한 언어만 넣으면 안 됩니다.

언어와 문화를 골고루 담아야 모든 손님을 받을 수 있습니다.

조건 3 — 양 (재료가 충분한가)

"얼마나 필요하냐"는 "돈이 얼마나 필요하냐"와 같습니다.

상황마다 답이 다릅니다.

저자가 주는 실전 규칙이 있습니다.

큰 데이터셋에 투자하기 전에, 먼저 작게(50개) 시작해서 효과가 있는지 보라.

50개로도 좋아지는 신호가 보이면, 더 넣으면 더 좋아질 가능성이 큽니다.

50개로 아무 변화가 없으면, 데이터를 아무리 늘려도 헛수고일 수 있습니다.

# 작게 먼저 실험 — 효과 있나 보기
모델1 = 파인튜닝(데이터[:50])    # 50개만
# 조건을 확인해서 상황에 맞는 처리 경로를 고릅니다.
if 모델1이_좋아졌다:
    더_많은_데이터를_모은다()    # 신호가 좋으니 투자

미니 시나리오 — 데이터가 적을 땐 더 똑똑한 큰 모델에 살짝만 가르치는 게 낫고, 데이터가 아주 많을 땐 작은 모델을 통째로 가르치는 게 낫습니다.

한 걸음 더 ▸ (지금 몰라도 됨)

"데이터가 많으면 그냥 처음부터 모델을 만드는 게 낫지 않나?" 싶을 수 있습니다. 가끔은 맞습니다. 다만 미리 학습된 모델 위에 얹는 게 보통 더 효율적입니다. "경화(굳음)"라는 현상 때문에 가끔 손해일 수 있다는 정도만 알아 두면 됩니다. 지금은 "작게 실험부터"만 기억하세요.


개념 2 — 재료가 부족하면 만든다 (합성 vs 증강)

망가지는 장면

"의료 AI를 만들려는데, 진짜 환자 기록은 법 때문에 못 씁니다."

진짜 재료를 못 구하는 상황입니다.

이럴 때 "비슷한 걸 만들어 쓰는" 방법이 있습니다.

만드는 방식이 두 가지인데, 헷갈리기 쉽습니다.

비유 먼저 — 사진 한 장

고양이 사진 한 장이 있습니다.

  • 이 사진을 좌우로 뒤집으면, 여전히 같은 고양이의 "새 사진"이 됩니다 → 증강
  • 고양이를 본 적 없이 AI가 새 고양이를 그려 내면 → 합성
비유 코드 위험
사진을 뒤집기 (증강) new = flip(real_photo) 변형이라 원본과 너무 비슷할 수 있음
새로 그리기 (합성) new = ai.draw("고양이") 진짜가 아니라 품질이 들쭉날쭉

핵심 차이는 이것입니다.

  • 데이터 증강 — 진짜 데이터에서 출발해 변형한다. (뿌리가 진짜)
  • 데이터 합성 — 진짜를 흉내 내 처음부터 만든다. (뿌리가 가짜)

책에서는 둘을 묶어 그냥 "합성"이라 부를 때가 많습니다.

왜 만들까 — 합성의 이유

# 1) 양 늘리기 — 희귀한 상황 데이터 만들기
사고데이터 = ai.make("자율주행 사고 장면 1000개")  # 실제론 구하기 어려움

# 2) 프라이버시 — 진짜 환자 대신 가짜 환자
# `가짜환자`에 중간 결과를 담아 다음 줄에서 재사용합니다.
가짜환자 = ai.make("개인정보 없는 환자 기록")

# 3) 커버리지 — 일부러 짧은/긴/위험한 예시 채우기
# `유해표현`에 중간 결과를 담아 다음 줄에서 재사용합니다.
유해표현 = ai.make("유해 탐지기 학습용 나쁜 말 예시")

미니 시나리오(worked) — 비밀번호 질문 하나를 AI에게 "바꿔 써 줘" 하면, 표현만 다른 질문 여러 개가 나옵니다.

"비번 어떻게 바꿔?" → "비밀번호를 잊어버렸어", "비밀번호 재설정 단계" …

이렇게 한 개로 여러 개를 만들어 커버리지를 넓힙니다.

미니 시나리오(부분 완성) — 빈칸을 채워 보세요.

# `원본`에 중간 결과를 담아 다음 줄에서 재사용합니다.
원본 = "환불 어떻게 해요?"
# `변형들`에 중간 결과를 담아 다음 줄에서 재사용합니다.
변형들 = ai.rephrase(원본, n=3)
# 변형들 → ["환불 받고 싶어요", "____", "____"]   # 표현만 다른 같은 뜻 질문

개념 3 — 선생을 베껴 작은 학생을 만든다 (모델 증류)

망가지는 장면

"제일 똑똑한 모델은 너무 크고 비싸서, 우리 서비스에 못 올립니다."

크고 똑똑하지만 느리고 비싼 모델이 있습니다.

이걸 작고 빠르게 줄이고 싶습니다.

비유 먼저 — 족집게 과외 노트

비싼 일타강사(큰 모델)에게 문제를 잔뜩 풀게 합니다.

그 풀이를 노트에 받아 적습니다.

그 노트로 동생(작은 모델)을 가르칩니다.

동생은 강사만큼은 아니어도, 그 노트 범위는 꽤 잘 풉니다.

비유 코드 위험
강사가 문제 풂 (선생 출력) ans = big_model.solve(q) 강사가 틀리면 노트도 틀림
노트로 동생 가르침 (학생 학습) small_model.learn(q, ans) 스타일만 흉내, 실력은 못 따라갈 수 있음

한 문장 정의 — 모델 증류는 큰 모델(교사)이 만든 답으로 작은 모델(학생)을 학습시켜, 비슷한 성능을 더 싸고 빠르게 내는 방법입니다.

실제 예 — BERT라는 모델을 증류한 DistilBERT는 크기를 40% 줄이고도 실력의 97%를 지켰고, 60% 더 빨라졌습니다.

또 알파카(Alpaca)는 큰 모델이 만든 5만 2천 개 예시로 작은 모델을 가르쳐, 4% 크기로 비슷하게 동작했습니다.

# 아래 예제는 핵심 흐름만 짧게 보여 줍니다.
# before — 비싼 큰 모델을 그대로 서비스에 올림
answer = huge_expensive_model.ask(q)   # 느리고 비쌈

# after — 큰 모델로 학생을 가르친 뒤, 학생만 올림
notes = huge_expensive_model.solve(many_questions)  # 선생 풀이
small_model.learn(many_questions, notes)            # 학생이 배움
answer = small_model.ask(q)                          # 싸고 빠름

한 걸음 더 ▸ (지금 몰라도 됨)

아무 모델이나 베껴도 되는 건 아닙니다. 많은 모델은 "내 답을 베껴 다른 모델을 가르치지 마"라고 라이선스로 금지합니다. 지금은 "큰 모델 답으로 작은 모델을 싸게 만드는 게 증류"만 기억하면 됩니다.


개념 4 — 가짜 재료만 먹이면 망가진다 (AI 데이터의 한계)

망가지는 장면

"AI가 만든 데이터가 편하길래, 그것만 계속 먹였더니 모델이 점점 멍청해졌어요."

합성 데이터는 편리하지만, 함정이 있습니다.

비유 먼저 — 복사본의 복사본

복사기로 종이를 복사합니다.

그 복사본을 또 복사합니다.

또 복사합니다.

반복할수록 글자가 흐려지고, 결국 못 읽게 됩니다.

AI가 만든 데이터로만 계속 학습하면 똑같은 일이 벌어집니다.

이걸 모델 붕괴(model collapse)라고 부릅니다.

비유 코드 위험
복사본을 또 복사 (합성만 반복) data = ai.make(data) # 계속 반복 흐려져서 희귀한 것부터 잊음
진짜 원본을 섞음 (혼합) data = ai_data + real_data 비율을 잘못 잡으면 효과 줄어듦

왜 흐려질까요?

AI는 흔한 것은 잘 만들지만, 드문 것은 잘 안 만듭니다.

반복할수록 드문 것이 데이터에서 사라지고, 모델은 평범한 답만 내뱉게 됩니다.

저자가 정리한 가짜 재료의 한계 네 가지입니다.

# 1) 품질 — 쓰레기 넣으면 쓰레기 나옴
# 조건을 확인해서 상황에 맞는 처리 경로를 고릅니다.
if not 검증가능(synthetic): 사용보류()

# 2) 피상적 모방 — 스타일만 베끼고 실력은 못 베낌
student.copy_style(teacher)   # 겉모습만 비슷, 어려운 건 못 풂

# 3) 모델 붕괴 — 합성만 반복하면 성능 추락
data = real_data + synthetic_data   # 반드시 진짜와 섞기

# 4) 불분명한 계보 — 어디서 온 데이터인지 모름
# 베낀 모델이 저작권 위반 데이터로 배웠다면, 내 모델도 위반일 수 있음

핵심 처방 — 합성 데이터는 진짜 데이터와 섞어 쓴다.

전부 합성이면 붕괴를 피할 수 없지만, 진짜와 섞으면 피할 수 있다는 연구가 있습니다.

미니 시나리오 — 의료 AI에서 가짜 환자 기록(합성)만 쓰면 위험합니다.

진짜 익명화 기록을 함께 섞고, 만든 데이터가 쓸 만한지 검증기로 채점한 뒤에 써야 합니다.


개념 5 — 모았으면 손질한다 (데이터 처리)

망가지는 장면

"데이터 다 모았으니 바로 학습 돌렸는데, 결과가 이상해요."

모은 재료를 바로 냄비에 넣은 셈입니다.

씻고, 다듬고, 똑같은 건 빼야 합니다.

비유 먼저 — 재료 손질

장 봐 온 재료를 바로 요리하지 않습니다.

씻고(정리), 똑같은 거 중복 빼고(중복 제거), 레시피 단위로 써는(형식 맞추기) 손질을 거칩니다.

비유 코드 위험
일단 눈으로 살펴봄 (검사) for d in data[:20]: print(d) 안 보면 숨은 문제를 놓침
똑같은 거 빼기 (중복 제거) data = list(set(data)) 중복은 모델에 편향을 심음
단위 맞춰 썰기 (형식 맞추기) d = strip_html(d).strip() 형식 틀리면 이상한 버그

손질의 핵심 단계입니다.

단계 1 — 직접 들여다보기 (검사)

저자가 가장 강조하는 한 줄입니다.

"데이터를 15분만 들여다봐도 보통 몇 시간의 삽질을 줄여 준다."

도구가 아무리 좋아도, 직접 눈으로 보는 걸 대신할 순 없습니다.

# 학습 전에 그냥 눈으로 몇 개 봄
# 목록이나 결과 묶음을 하나씩 꺼내 같은 처리를 반복합니다.
for example in data[:20]:
    print(example)   # 이상한 게 보이면 바로 잡음

단계 2 — 중복 빼기 (중복 제거)

같은 데이터가 여러 번 들어가면 모델이 편향됩니다.

저자의 예 — "빨간 연필 $20"이 세 번 들어가면, 모델은 "빨간 건 다 비싸다"고 잘못 배웁니다.

# before — 같은 예시가 여러 번
# `data`에 중간 결과를 담아 다음 줄에서 재사용합니다.
data = ["빨간연필", "빨간연필", "빨간연필", "초록나침반"]

# after — 한 번씩만
data = ["빨간연필", "초록나침반"]   # 편향 방지

단계 3 — 정리하고 형식 맞추기

쓸데없는 HTML 태그를 떼고, PII(개인정보) 같은 못 쓰는 정보를 지웁니다.

그리고 모델이 기대하는 형식으로 통일합니다.

실제 사례 — 데이터브릭스는 불필요한 HTML·마크다운을 떼자 정확도가 20% 오르고 입력 길이가 60% 줄었습니다.

# before — 태그·공백 뒤섞인 더러운 데이터
# `raw`에 중간 결과를 담아 다음 줄에서 재사용합니다.
raw = "  <div>좋은 제품!</div>\n\n "

# after — 깨끗하게 손질
clean = "좋은 제품!"   # 태그 제거 + 공백 정리

미니 시나리오(독립 적용) — 학습 데이터가 "버거 -->" 형식인데, 나중에 "버거"(화살표 빠짐)로 물으면 모델이 헷갈립니다.

학습 형식과 사용 형식을 똑같이 맞춰야 합니다.


단순 규칙 (이것만 기억하면 됨)

데이터 일은 복잡해 보여도, 규칙은 단순합니다.

  1. 재료부터 본다 — 양보다 신선도(품질). 적은 고품질이 많은 저품질을 이긴다.
  2. 골고루 담는다 — 사용자가 쓰는 다양한 방식(커버리지)을 빠짐없이.
  3. 작게 실험부터 — 50개로 효과를 보고 나서 더 모은다.
  4. 부족하면 만들되, 진짜와 섞는다 — 합성 데이터만 쓰면 망가진다(붕괴).
  5. 모았으면 직접 본다 — 눈으로 15분, 중복 빼고, 형식 맞추기.

기본 안전판은 "신선한 재료 + 직접 보기"입니다.


더 해보기 (검증된 자료, 검증 2026-05-21)

지금 몰라도 됩니다. 더 궁금할 때만 보세요.

  • 품질이 양을 이긴다는 근거LIMA 논문: 잘 고른 1,000개로 거대 모델에 맞먹은 실험.
  • 합성 데이터가 표준 전략이 된 흐름Synthetic Data Survey (2024).
  • 좋은 공개 데이터 모음HuggingFace datasets (사실상 표준 허브), FineWeb-Edu (교육 품질 필터링 웹 텍스트), Dolma (데이터 계보를 투명하게 공개한 코퍼스).

정리

  • 좋은 데이터의 조건은 셋: 품질·커버리지·양. 요리 재료로 외우면 쉽다.
  • 진짜 재료가 부족하면 만든다. 변형하면 증강, 새로 지으면 합성. 단, 합성만 쓰면 모델이 망가지니 진짜와 섞는다.
  • 모았으면 직접 들여다보고, 중복 빼고, 형식을 맞춘다. 이 손질이 절반이다.

다음 장 예고 1줄 — 좋은 데이터로 모델을 잘 만들었다면, 이제 그 모델을 빠르고 싸게 굴리는 법을 본다. (지금 몰라도 됩니다 — 다음 장에서 풀려요.)


연습문제

  1. 설명. 좋은 재료 모으기의 핵심을 처음 듣는 사람에게 한 문장으로 설명하라.
  2. 구분. 두 개념(합성 데이터, 증강 데이터)을 실제 예시 하나로 구분하라.
  3. 적용. 내 프로젝트나 학습 노트에서 이 장의 개념을 적용해 작게 개선할 지점을 하나 고르라.

부록 A. 쉬운 용어 사전

용어 아주 쉬운 뜻 이 장에서 나온 위치
합성 데이터 사람이 직접 모은 것이 아니라 모델이나 규칙으로 만든 데이터. 부록 B와 본문 예시
증강 데이터 기존 데이터를 조금 바꾸어 다양하게 늘린 데이터. 부록 B와 본문 예시
모델 증류 큰 모델의 행동을 작은 모델이 따라 배우게 만드는 방법. 부록 B와 본문 예시
파인튜닝 이미 학습된 모델에 새 예시를 더 보여 주어 특정 행동을 더 잘하게 만드는 작업. 부록 B와 본문 예시

부록 B. 헷갈리는 개념 비교표

A B 구분 포인트
합성 데이터 증강 데이터 합성은 새 예시를 만들고, 증강은 기존 예시를 조금 바꿔 늘린다.
모델 증류 파인튜닝 증류는 큰 모델을 작은 모델이 따라 배우게 하고, 파인튜닝은 특정 작업 예시로 다듬는다.

부록 C. 더 읽을 자료

  • 이 장의 더 해보기 섹션 — 이미 모아 둔 공식 문서나 실습 링크가 있으면 여기서 먼저 확인한다.
  • 같은 책의 0장 한눈에 보기 — 용어가 막히면 0장의 용어집과 개념 척추로 돌아간다.
  • 원본 딥다이브판 같은 장 — 입문판을 읽고 큰 흐름이 잡힌 뒤 세부 논리를 더 깊게 확인한다.
  • 이 장의 flashcards.json — 읽은 직후 질문만 보고 답을 떠올리는 회상 연습에 쓴다.

부록 D. 연습문제 풀이

  1. 설명 예시. 좋은 재료 모으기는 거대 모델을 제품에 넣을 때 어떤 선택을 하고 어떻게 확인할지 판단하게 해 주는 장이다. 중요한 것은 용어를 외우는 것이 아니라, 이 개념이 어떤 입력·부품·결정에 영향을 주는지 말로 풀어 보는 것이다.
  2. 구분 예시. 두 개념(합성 데이터, 증강 데이터)의 차이는 이렇게 잡으면 된다. 합성은 새 예시를 만들고, 증강은 기존 예시를 조금 바꿔 늘린다. 실제 사례를 볼 때는 목적, 입력, 실패했을 때의 증상을 따로 적어 보면 헷갈리지 않는다.
  3. 적용 예시. 가장 작은 개선부터 고른다. 예를 들어 이름을 더 분명히 하거나, 평가 기준을 한 줄 추가하거나, 직접 알 필요 없는 내부 정보를 감추는 식으로 시작한다. 한 번에 크게 갈아엎는 것보다 작은 변경 하나를 확인하며 진행하는 쪽이 입문 단계에 맞다.
난이도
에피소드
질문
카드를 로딩 중...
답변

클릭하거나 Space를 눌러 뒤집기

0 / 0
학습 진도 0%
이동   Space 뒤집기   R 셔플